package com.evernote.android.demo.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import android.webkit.WebResourceResponse;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.evernote.android.demo.R;
import com.evernote.client.android.EvernoteSession;
import com.evernote.client.android.asyncclient.EvernoteClientFactory;
import com.evernote.client.android.asyncclient.EvernoteHtmlHelper;
import com.evernote.client.android.helper.Cat;
import com.evernote.client.android.type.NoteRef;
import com.evernote.edam.error.EDAMNotFoundException;
import com.evernote.edam.error.EDAMSystemException;
import com.evernote.edam.error.EDAMUserException;
import com.evernote.thrift.TException;
import com.squareup.okhttp.Response;
import java.io.IOException;
/**
* @author rwondratschek
*/
@SuppressWarnings("FieldCanBeLocal")
public class ViewHtmlActivity extends AppCompatActivity {
private static final Cat CAT = new Cat("ViewHtmlActivity");
private static final String KEY_NOTE = "KEY_NOTE";
private static final String KEY_HTML = "KEY_HTML";
public static Intent createIntent(Context context, NoteRef note, String html) {
Intent intent = new Intent(context, ViewHtmlActivity.class);
intent.putExtra(KEY_NOTE, note);
intent.putExtra(KEY_HTML, html);
return intent;
}
private NoteRef mNoteRef;
private String mHtml;
private EvernoteHtmlHelper mEvernoteHtmlHelper;
@SuppressWarnings("ConstantConditions")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_html);
mNoteRef = getIntent().getParcelableExtra(KEY_NOTE);
mHtml = getIntent().getStringExtra(KEY_HTML);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
toolbar.setTitleTextColor(getResources().getColor(R.color.tb_text));
setSupportActionBar(toolbar);
if (!isTaskRoot()) {
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
getSupportActionBar().setTitle(mNoteRef.getTitle());
final WebView webView = (WebView) findViewById(R.id.webView);
if (savedInstanceState == null) {
String data = "<html><head></head><body>" + mHtml + "</body></html>";
webView.setWebViewClient(new WebViewClient() {
@SuppressWarnings("deprecation")
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
try {
Response response = getEvernoteHtmlHelper().fetchEvernoteUrl(url);
WebResourceResponse webResourceResponse = toWebResource(response);
if (webResourceResponse != null) {
return webResourceResponse;
}
} catch (Exception e) {
CAT.e(e);
}
return super.shouldInterceptRequest(view, url);
}
});
webView.loadDataWithBaseURL("", data, "text/html", "UTF-8", null);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
protected WebResourceResponse toWebResource(Response response) throws IOException {
if (response == null || !response.isSuccessful()) {
return null;
}
String mimeType = response.header("Content-Type");
String charset = response.header("charset");
return new WebResourceResponse(mimeType, charset, response.body().byteStream());
}
protected EvernoteHtmlHelper getEvernoteHtmlHelper() throws EDAMUserException, EDAMSystemException, EDAMNotFoundException, TException {
if (mEvernoteHtmlHelper == null) {
EvernoteClientFactory clientFactory = EvernoteSession.getInstance().getEvernoteClientFactory();
if (mNoteRef.isLinked()) {
mEvernoteHtmlHelper = clientFactory.getLinkedHtmlHelper(mNoteRef.loadLinkedNotebook());
} else {
mEvernoteHtmlHelper = clientFactory.getHtmlHelperDefault();
}
}
return mEvernoteHtmlHelper;
}
}